﻿#pragma execution_character_set("utf-8")
#include "corediswidget.h"
#include <QApplication>
#include "mainwidget.h"
#include <QTextCodec>
#include <QProcess>
#include <QFontDatabase>
#include <QDateTime>
#include <QDebug>
#include <QFile>
#include <QDir>
#include <QIcon>

/**
 * @brief 应用程序主入口
 * 
 * @details 初始化QT应用程序环境，处理编码兼容性问题，加载样式表并创建主窗口
 * 
 * @param argc 命令行参数计数
 * @param argv 命令行参数数组
 * @return int 应用程序退出码
 */
int main(int argc, char* argv[])
{
    /**
     * @brief QT应用对象初始化
     * @note 根据QT版本差异处理编码问题：
     * - QT5以下版本需设置多重编码处理器
     * - QT5及以上版本仅需设置locale编码
     */
    QApplication a(argc, argv);
#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))
#if _MSC_VER
    QTextCodec *codec = QTextCodec::codecForName("gbk");
#else
    QTextCodec *codec = QTextCodec::codecForName("utf-8");
#endif
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);
#else
    QTextCodec *codec = QTextCodec::codecForName("utf-8");
    QTextCodec::setCodecForLocale(codec);
#endif
    a.setWindowIcon(QIcon(":/main.ico"));
    a.setApplicationDisplayName("");
    QString qssFile = ":/qss/flatwhite.css";
    /**
     * @brief 加载样式表文件
     * @details 执行流程：
     * 1. 读取qss文件内容
     * 2. 提取首行调色板颜色值
     * 3. 全局应用样式表和调色板
     * @warning 必须确保qss文件路径正确且可读
     */
    QFile file(qssFile);

    if (file.open(QFile::ReadOnly)) {
        QString qss = QLatin1String(file.readAll());
        QString paletteColor = qss.mid(20, 7);
        qApp->setPalette(QPalette(QColor(paletteColor)));
        qApp->setStyleSheet(qss);
        file.close();
    }
    /**
     * @brief 主窗口初始化
     * @details 完成：
     * - 窗口大小自适应
     * - 子组件层级关系建立
     * - 信号槽连接初始化
     */
    MainWidget w;
    w.show();

    return a.exec();
}
